import java.util.ArrayList;
/**
 * Osztály az időzített események kezelésére
 */
public class Timer
{
  /**
   * Az időzített objektumok listája
   */
  private ArrayList _tickables = new ArrayList();
  private boolean running = false;

  /**
   * Új időzítendő objektum hozzáadása.
   * @param tickable Az időzítendő objektum.
   */
  public void add(ITickable tickable)
  {
    _tickables.add(tickable);
  }

  /**
   * A timer működésének elindítása
   */
  public void start()
  {
    running = true;
  }

  /**
   * Ideiglenes függvény a protoban, ezen keresztül kapja meg a tick parancsot.
   */
  public void tick()
  {
    if(running)
    {
      System.out.println("tick");
      callTicks();
    }
  }

  /**
   * Végighívja a timerre feliratokzott objektumok tick függvényeit.
   */
  private void callTicks()
  {
    for(int i = 0;i< _tickables.size();i++)
    {
      ((ITickable)_tickables.get(i)).tick();
    }
  }

  /**
   * A timer működésének megállítása
   */
  public void stop()
  {
    running = false;
  }
}